function u = enforce_constraints_bad(u, d_min, Ct_bounds)
    % 约束投影，确保粒子满足最小距离约束，并在可行范围内
    % u: 粒子位置向量 [t1x, t1y, t2x, t2y, ..., rx, ry]
    % d_min: 最小距离
    % Ct_bounds: 发射天线的可行范围，形如 [x_min, x_max; y_min, y_max]
    % Cr_bounds: 接收天线的可行范围，形如 [rx_min, rx_max; ry_min, ry_max]

    % 提取天线信息
    N = (length(u)) / 2; % 发射天线个数
    t = reshape(u, [2, N]); % 发射天线坐标 [2 × N]


    % --- 可行范围约束 ---
    % 发射天线坐标范围 [x_min, x_max] 和 [y_min, y_max]
    x_min = Ct_bounds(1, 1); x_max = Ct_bounds(1, 2);
    y_min = Ct_bounds(2, 1); y_max = Ct_bounds(2, 2);

    % 投影到发射天线范围
    t(1, :) = max(min(t(1, :), x_max), x_min); % 限制 x 坐标
    t(2, :) = max(min(t(2, :), y_max), y_min); % 限制 y 坐标



    % --- 最小距离约束 ---
    for i = 1:N
        for j = (i+1):N
            % 计算两天线的欧几里得距离
            dist = norm(t(:, i) - t(:, j));
            if (  (t(2, i) == Ct_bounds(2,1)) && (t(2, j) == Ct_bounds(2,1)) )
                t(2, j) = Ct_bounds(2,1) +  d_min;
                continue
            end
            if (  (t(2, i) == Ct_bounds(2,2)) && (t(2, j) == Ct_bounds(2,2)) )
                t(2, i) = Ct_bounds(2,2) - d_min;
                continue
            end
            if dist < d_min
                % 调整 j 天线的位置
                direction = (t(:, j) - t(:, i)) / dist; % 归一化方向向量
                % 计算需要的偏移量
                offset = (d_min - dist) / 2; % 每个天线部分调整
                
                % 将第 j 天线移出重叠位置
                t(:, j) = t(:, j) + direction * offset; % 移动j天线
                % 将第 i 天线向外移动
                t(:, i) = t(:, i) - direction * offset; % 移动i天线

                % 确保调整后天线仍在可行域内
                t(1, j) = max(min(t(1, j), x_max), x_min);
                t(2, j) = max(min(t(2, j), y_max), y_min);
                t(1, i) = max(min(t(1, i), x_max), x_min);
                t(2, i) = max(min(t(2, i), y_max), y_min);
            end
        end
    end
    % t_line1 = t(1,:);
    % t_line2 = t(2,:);
    % sorted_t_line2 = sort(t_line2);
    % t_comb = [t_line1.' ,sorted_t_line2.'].'

    % --- 更新位置向量 ---
    % u = [t_comb(:)];
    u = [t(:)]
end
